import router from '@/router/router.ts'
import  nprogress from 'nprogress'
import 'nprogress/nprogress.css'
nprogress.configure({showSpinner:false})
import useUserStore from "@/store/modules/user.ts";
import pinia from "@/store";
const userStore = useUserStore(pinia)
import setting from "@/setting.ts";
router.beforeEach(async (to,_,next:any)=>{
    document.title=setting.title+'-'+to.meta.title
    nprogress.start()
    const token = userStore.token
    const username = userStore.username
    if(token){
        //登录成功，访问login，不能访问，指向首页
        if(to.path=='/login'){
            next({path:'/'})
        }else{
            //登录成功访问其余六个路由
            //有用户信息
            if(username){
                next()
            }else{ //没有用户信息，在此获取用户信息，然后放行
                try {
                    await userStore.userInfo()
                    //路由鉴权之后白屏，刷新的时候是异步路由，有可能获取到用户信息、异步路由还没有加载完毕，出现空白的效果
                    next({...to})
                }catch (e) {
                    //报错由于token有误
                    // 清除所有用户信息
                    // 跳转到登录界面
                    await userStore.userLogout()
                    next({path:'/login',query:{redirect:to.path}})
                }
            }
        }
    }else {
        //用户未登录
        if(to.path=='/login'){
            next()
        }else{
            next({path:'/login',query:{redirect:to.path}})
        }
    }
})
router.afterEach(()=>{
    nprogress.done()
})

//1，任意路由切换实现进度条业务
//2，路由鉴权

//未登录时只能访问login，访问其他的会重定向到login
//登录之后除了login都可以访问